let Log = require('./utils/Log');
const log = new Log();
/**
 * 依次打印日志、记录时间、输入结果
 */
 var Koa = require('koa');
 var app = new Koa();

/**
 * 打印请求路径的中间件
 */
app.use(async (ctx,next) =>{
  console.log(`请求方法: ${ctx.request.method} 请求路径: ${ctx.request.url}`)
  await next(); //---> 去执行处理时间异步函数
});

/**
 * 记录处理时间的中间件
 */
app.use(async (ctx,next) =>{
  let startTime = new Date().getTime();
  await next(); //---> 去执行返回body的异步函数
  let ms = new Date().getTime() - startTime;
  console.log(`请求处理时间: ${ms}`)
});

 /**
  * 对于任何请求,app都将调用该异步函数处理,koa把很多异步函数组成了调用链
  * 使用await next() 来调用下一个异步函数;每个异步函数都是一个中间件,这
  * 些中间件组合起来,完成很多功能
  * ctx 封装了request和response变量
  * next是koa传入的将要处理的下一个异步函数
  */
  app.use(async (ctx,next) => {
    await next(); //这里已经只调用链的末端
    ctx.body = '1';
  });

app.listen(3001);
